package com.zjut.zs.file.manager;

import java.net.URL;
import java.util.Date;
import java.util.List;

import javax.annotation.Resource;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.zjut.an.news.dao.AnNews;
import com.zjut.an.util.module.PageModule;
import com.zjut.an.util.system.Status;
import com.zjut.zs.file.dao.ZsFile;
import com.zjut.zs.file.dao.ZsFileDAO;
import com.zjut.zs.shhd.dao.ZsShhd;
import com.zjut.zs.user.dao.ZsUser;
import com.zjut.zs.util.tools.ZsHTMLCreat;


public class ZsFileManager {

	@Resource(name = "ZsFileDAO")
	private ZsFileDAO dao;
	
	@Resource(name = "ZsHTMLCreat")
	private ZsHTMLCreat html;
	
	public void addData(ZsFile obj) {	
		dao.save(obj);
	}
	
	public void updateData(ZsFile obj) {
		dao.update(obj);
	}
	
	public void deleteData(ZsFile obj) {
		dao.delete(obj);
	}

	public void deleteDatas(List<ZsFile> objlist) {
		for (ZsFile ZsFile : objlist) {
			dao.delete(ZsFile);
		}
	}
	
	public PageModule getDataByInstance (int pageNumber,int pageSize, String sort, String order, ZsFile obj) {
		return dao.findByInstance(pageNumber, pageSize, sort, order, obj);
	}
	
	public List getDatas() {
		return dao.findAll();
	}
	public List findByExample(ZsFile instance) {
		return dao.findByExample(instance);
	}

	public ZsFile getData(String objId) {
		return dao.findById(objId);
	}
	
	public List getDataByUser(ZsUser user) {
		ZsFile obj = new ZsFile();
		obj.setZsUser(user);
		return this.getDataByInstance(1, 1000, null, null, obj).getObjects();
	}
	
	public List getOtherFiles(String usId, String fiType) {
		String sql="from ZsFile where zsUser.usId='"+usId+"' and fiType='"+fiType+"' and fiName not in (select coValue from AnConfig where coName like '上传材料名称') ";
		return dao.findByHql(1, 100, sql, null);
	}
	
	public String getFileURL(String filelocalview, String fileurl, String usIdcard, boolean local) {
		if(local || "是".equals(filelocalview)) {
			// Endpoint以杭州为例，其它Region请按实际情况填写。
			int index1 = fileurl.lastIndexOf("/");
			int index2 = (fileurl.indexOf("?")>0)?fileurl.indexOf("?"):fileurl.length();
			String objectName = fileurl.substring(index1, index2);	
			return html.getJsonValue("swytyunfiles")+"/"+usIdcard+"/"+objectName;
		} else {
			// Endpoint以杭州为例，其它Region请按实际情况填写。
			int index2 = (fileurl.indexOf("?")>0)?fileurl.indexOf("?"):fileurl.length();
			String objectName = fileurl.substring(fileurl.indexOf("com/")+4, index2);			
			// 创建OSSClient实例。
			OSS ossClient = new OSSClientBuilder().build(FilePath.endpoint, FilePath.accessKeyId, FilePath.accessKeySecret);
			// 设置URL过期时间为20分钟。
			Date expiration = new Date(new Date().getTime() + 1200 * 1000);
			// 生成以GET方法访问的签名URL，访客可以直接通过浏览器访问相关内容。
			URL url = ossClient.generatePresignedUrl(FilePath.bucketName, objectName, expiration);
			// 关闭OSSClient。
			ossClient.shutdown();
			return url.toString();
		}		
	}
}
